題目說明為給定一非空的數字陣列,此陣列用來表示一個非負整數,要我們 +1 後返回。除了 0 以外,此陣列的第一項均不為 0。
題目另外有補充說明: 陣列長度介於 [0,100],每個位數值介於 [0,9]。
例子 1: digits = [4,3,2,1], output=[4,3,2,2]。
我們可以從最後一位數開始,如果 < 9,則可以直接 +1 後返回。如果剛好是 9 ,要 +1 後此位數為 0,往前進位。而往前進位的程序也是繼續檢查該位數是否 < 9 ,因此可寫成一迴圈檢查。而要注意的是若原陣列內的各個位數均為 9, 例如 digits = [9,9],則加完後的值為 [1,0,0],位數需要+1。
參考程式碼
func plusOne(digits []int) []int {
for i:=len(digits)-1;i>=0;i--{
if digits[i]<9{
digits[i]++
return digits
}else{
digits[i]=0
}
}
digits=append(digits,0)
digits[0]=1
return digits
}
此題最高輸入位數可為 100 位數,相當於對大數進行運算,而當要加的數字不為 1 時,有更一般的寫法,網路上的分享解法在此。
我將分享解法稍做修改,增加迴圈停止條件以及直接返回 digits 後 做為解法 2,加上簡單的測試,上傳 程式碼到此。